home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 2000 January / Macworld (2000-01).dmg / Shareware World / Icon Utilities / IconMacher 1.5.4 / User Contributions / Notarianni Carlo / Clean.txt < prev   
Text File  |  1999-10-17  |  4KB  |  136 lines

  1. on run
  2.     activate
  3.     beep
  4.     display dialog "Clean By Drag
  5. (c) 1999 By Notarianni Carlo
  6. e-mail:  cnotarianni@mix.it
  7.  
  8. This script is written to clean folder with custom icon generated by
  9. “Icon Macher”© Purple E Software
  10.  
  11. Just you drag the folder contains custom icon on top of this droplet… and enjoy!" buttons {"OK"} default button 1 with icon stop
  12. end run
  13.  
  14. on open (fileList)
  15.     repeat with theNames in fileList
  16.         CheckFiles(theNames as text)
  17.     end repeat
  18. end open
  19.  
  20. to CheckFiles(thisName)
  21.     copy thisName as text to thisName
  22.     (*
  23.     check for files or folders
  24.     *)
  25.     if folder of (info for file thisName) is true then
  26.         set theFolderName to thisName
  27.         if the last character of theFolderName is not ¬
  28.             ":" then set theFolderName to theFolderName & ":"
  29.         my clean(theFolderName)
  30.     else
  31.         -- Ignore file
  32.     end if
  33. end CheckFiles
  34.  
  35. on clean(x)
  36.     tell application "Finder"
  37.         activate
  38.         set i to 32 --incrementer
  39.         set s to 10 --left edge of first icon
  40.         set t to 30 --top edge of first icon
  41.         open folder x
  42.         set Nx to 10
  43.         set Ny to 10
  44.         set ItemNumber to count of item of folder x
  45.         set MaxIcon to (count of (every item of folder x whose creator type is "ToyS"))
  46.         if MaxIcon < 1 then
  47.             beep
  48.             display dialog "The folder: " & name of folder x & return & "NOT contains \"IconMacher\" custom icon…" buttons {"OK"} default button 1 with icon stop
  49.             return
  50.         end if
  51.         set MaxText to "  Max: " & MaxIcon
  52.         -- Ask for Number of icon in Horizontal
  53.         set WindowSide to size of container window of folder x
  54.         set HWindowSide to first item of WindowSide
  55.         set SuggIconNumber to round ((HWindowSide - 70) / 32)
  56.         if MaxIcon mod SuggIconNumber = 0 then
  57.             set MaxText to MaxText & return & "With current window size I suggest: " & SuggIconNumber
  58.         end if
  59.         
  60.         copy false to validX
  61.         repeat until validX
  62.             copy true to validX
  63.             copy 0 to Nx
  64.             set UserAnswer to display dialog "Number of icon in Horizontal…" & MaxText default answer "" buttons {"Cancel", "OK"} default button 2 with icon ask
  65.             copy result to thisResult
  66.             copy text returned of thisResult to UserAnswer
  67.             copy button returned of thisResult to UserButtonPressed
  68.             if UserButtonPressed is "Cancel" then return
  69.             try
  70.                 copy (UserAnswer as integer) to UserAnswer
  71.             on error
  72.                 copy 0 to UserAnswer
  73.                 copy false to validX
  74.             end try
  75.             if UserAnswer ≥ 1 and UserAnswer ≤ MaxIcon then
  76.                 copy UserAnswer to Nx
  77.             else
  78.                 copy false to validX
  79.             end if
  80.             -- UserAnwer must divisible by Number of icon…
  81.             if Nx > 0 and MaxIcon mod Nx ≠ 0 then copy false to validX
  82.             
  83.             if not validX then
  84.                 display dialog "Incorrect Number…" default button {"OK"} with icon stop
  85.             end if
  86.         end repeat
  87.         
  88.         --- Simply Nx*Ny = MaxIcon…
  89.         set Ny to MaxIcon div Nx
  90.         
  91.         clean up folder x by name
  92.         
  93.         set IconCounter to 0
  94.         set theFolderName to (folder x) as text
  95.         repeat with Vert from 0 to (Ny - 1)
  96.             repeat with Horiz from 0 to (Nx - 1)
  97.                 copy IconCounter + 1 to IconCounter
  98.                 set theIconName to my HiddenBinary(IconCounter)
  99.                 set ThisIcon to theFolderName & theIconName
  100.                 set position of file ThisIcon to {s + i * Horiz, t + i * Vert}
  101.             end repeat
  102.         end repeat
  103.         
  104.         --- Now clean files and folder…
  105.         make new folder at (startup disk)
  106.         set TempFolder to (result) as text
  107.         move (every item of folder x whose creator type is not "ToyS") to folder TempFolder
  108.         select {}
  109.         close folder theFolderName
  110.         open folder theFolderName
  111.         set zoomed of container window of folder theFolderName to true
  112.         move (every item of folder TempFolder) to folder theFolderName
  113.         delete folder TempFolder
  114.         empty trash
  115.         open folder theFolderName
  116.         set zoomed of container window of folder theFolderName to true
  117.     end tell
  118. end clean
  119.  
  120. on HiddenBinary(N)
  121.     set HiddenDigit to "     " -- Tab & Space
  122.     copy (round (N)) to Num
  123.     set HiddenNumber to ""
  124.     repeat
  125.         copy Num mod 2 to s
  126.         copy Num div 2 to Num
  127.         copy (character (s + 1) of HiddenDigit) & HiddenNumber to HiddenNumber
  128.         if Num = 0 then exit repeat
  129.     end repeat
  130.     --Copy 15 tab before hidden binary number
  131.     copy "                                                                " & HiddenNumber to HiddenNumber
  132.     copy (count of character of HiddenNumber) to L
  133.     return (characters (L - 14) thru L of HiddenNumber) as text
  134. end HiddenBinary
  135.  
  136.